﻿using Credinka.Ayni.SEA.EN;
using Credinka.Ayni.SEA.RN;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net;
using Credinka.Ayni.GEN.UTL;
using System.Text;

public partial class RegistrarPerfil : System.Web.UI.Page {
  private enPerfil oenPerfil;
  private enLog oenLog;
  private rnLog ornLog;
  private rnPerfil ornPerfil;
  private rnDescripcion ornDescripcion;

  string codigo = string.Empty;

  #region Eventos

  protected void Page_Load(object sender, EventArgs e) {
    codigo = Page.Request.QueryString.AllKeys.ToList().Count > 0 ? Page.Request.QueryString["codigo"].ToString() : string.Empty;
    
    if (!Page.IsPostBack) {
      if (codigo != string.Empty) {
        hdfPerfil.Value = codigo;
        ObtenerPerfil();
      }
      CargarEstado();
    }
  }

  protected void btnSi_Click(object sender, EventArgs e) {
    oenPerfil = new enPerfil();
    ornPerfil = new rnPerfil();
    oenPerfil.Nombre = txtNombre.Value;
    oenPerfil.Descripcion = txtDescripcion.Text;
    oenPerfil.CodigoEstado = int.Parse(ddlEstado.SelectedValue);

    if (hdfPerfil.Value != String.Empty) {
      //ACTUALIZAR FORMULARIO
      oenPerfil.IdPerfil = int.Parse(hdfPerfil.Value);
      oenPerfil.AudNombreUsuarioModificacion = utlAuditoria.ObtenerUsuarioDominio();
      oenPerfil.AudMacModificacion = utlAuditoria.ObtenerDireccionMAC();
      oenPerfil.AudIPModificacion = utlAuditoria.ObtenerDireccionIP();

      int idPerfil = ornPerfil.Modificar(oenPerfil);
      if (idPerfil != 0) {
        StringBuilder sb = new StringBuilder();
        sb.Append(@"<script language='javascript'>");
        sb.Append(@"var lbl =  AbrirModal('330', '210', true, false, '#confirmacion', false);");
        sb.Append(@"$('#confirmacion').css('display', 'block');");
        sb.Append(@"</script>");
        ClientScript.RegisterStartupScript(this.GetType(), "JSScript", sb.ToString());
      } else {
        dvAlerta2.InnerHtml = "El nombre del perfil ya se encuentra registrado en la base de datos.";
        fijo.Attributes.CssStyle.Add("height", "50px");
        dvAlerta2.Attributes.CssStyle.Add("display", "block");
      }
    } else {
      //INSERTAR FORMULARIO CON SUS RESPECTIVOS CAMPOS DE AUDITORIA
      oenPerfil.AudNombreUsuarioCreacion = utlAuditoria.ObtenerUsuarioDominio();
      oenPerfil.AudMacCreacion = utlAuditoria.ObtenerDireccionMAC();
      oenPerfil.AudIPCreacion = utlAuditoria.ObtenerDireccionIP();
      int idPerfil = ornPerfil.Registrar(oenPerfil);

      Util obj = new Util();
      int idformulario = Convert.ToInt32(this.hdfFormulario.Value);
      int idobjeto = Convert.ToInt32(this.hdfGrabar.Value);
      obj.ConsultarCorreosPorObjetoyFormulario(idformulario, idobjeto);      

      RegistrarLog();

      if (idPerfil != 0) {
        StringBuilder sb = new StringBuilder();
        sb.Append(@"<script language='javascript'>");
        sb.Append(@"var lbl =  AbrirModal('330', '210', true, false, '#confirmacion', true);");
        sb.Append(@"$('#confirmacion').css('display', 'block');");
        sb.Append(@"</script>");
        ClientScript.RegisterStartupScript(this.GetType(), "JSScript", sb.ToString());
      } else {
        dvAlerta2.InnerHtml = "El nombre del perfil ya se encuentra registrado en la base de datos.";
        fijo.Attributes.CssStyle.Add("height", "50px");
        dvAlerta2.Attributes.CssStyle.Add("display", "block");
      }
    }
  }

  #endregion

  #region Métodos

  private void CargarEstado() {
    ornDescripcion = new rnDescripcion();
    ddlEstado.DataSource = ornDescripcion.ListarEstado();
    ddlEstado.DataTextField = "Descripcion";
    ddlEstado.DataValueField = "CodigoElemento";
    ddlEstado.DataBind();
  }

  private void ObtenerPerfil() {
    ornPerfil = new rnPerfil();
    oenPerfil = new enPerfil();
    oenPerfil.IdPerfil = int.Parse(codigo);
    oenPerfil = ornPerfil.Obtener(oenPerfil);
    txtNombre.Value = oenPerfil.Nombre;
    txtDescripcion.Text = oenPerfil.Descripcion;
    ddlEstado.SelectedValue = oenPerfil.CodigoEstado.ToString();
  }

  private void LimpiarControles() {
    txtNombre.Value = string.Empty;
    txtDescripcion.Text = string.Empty;
  }

  private void RegistrarLog() {
    oenLog = new enLog();
    ornLog = new rnLog();
    enUsuario oenUsuario = (enUsuario)Session["obe_Usuario"];
    oenLog.IdUsuario = oenUsuario.IdUsuario;
    oenLog.NombreUsuario = oenUsuario.NombreUsuario;
    oenLog.NombreCompleto = oenUsuario.NombreCompleto;
    oenLog.AudIpCreacion = utlAuditoria.ObtenerDireccionIP();
    oenLog.AudMacCreacion = utlAuditoria.ObtenerDireccionMAC();
    oenLog.AudFechaCreacion = DateTime.Now;
    oenLog.Cargo = oenUsuario.entDescripcion.Descripcion.ToString();
    oenLog.Mensaje = string.Empty;
    oenLog.Operacion = utlConstante.TipoOperacionRegistro;
    oenLog.Agencia = Session["NombreOficina"].ToString();
    oenLog.Seguimiento = btnGrabar.Text;

    //Registrar Log
    ornLog.Registrar(oenLog);
  }

  #endregion
}